
class DartType{

  ///Dart的数字类型
  ///
  void numType() {
    num num1 = -1.0; // num 是数字类型的父类
    num num2 = 2;
    int int1 = 3; // int 只能是整数
    double d1 = 1.68; //双精度，(带有小数点的)

    print("num:$num1 num2:$num2  int:$int1  double:$d1");
    print(num1.abs()); //求绝对值
    print(num1.toInt()); //转换成int
    print(num1.toDouble()); //转换成Double
  }

  ///Dart的字符串
  void stringType() {
    String str1 = 'Hello Dart', str2 = "双引号"; //字符串的定义
    String str3 = "str1:$str1 str2:$str2"; //字符串拼接
    String str4 = 'str1:' + str1; //字符串拼接
    String str5 = "0123456789";
    String str6 = "0.12.345.67.8.9";
    print(str3);
    print(str4);
    print(str5.substring(1, 6)); //字符串截取
    print(str5.indexOf('567')); //获取指定字符的位置
    //作业：startsWith,replaceAll,contains,split等。
    print(str1.toUpperCase()); //将小写英文转换成大写
    print(str5.startsWith('0123')); //判断字符是不是字符串的开始
    print(str5.replaceAll("5", "replace")); //将前字符替换成后字符
    print(str6.split('.')); //通过指定字符，将字符串截取为数组
    print(str5.contains('10')); //判断字符串是否存在该字符
  }

  ///布尔类型 Dart是强bool类型检查，
  void boolType() {
    bool success = true, fail = false;
    print(success);
    print(fail);
    print(success || fail);
    print(success && fail);
  }

  ///List集合
  void listType() {
    ///集合初始化方式
    List list = [1, 2, 3, '123']; //初始化时添加元素
    print(list);

    List list3 = []; //动态赋值
    list3.add("234");
    list3.add(list);
    print(list3);

    ///List的生成函数
    List list4 = List.generate(4, (index) => index * 4);
    print(list4);

    //遍历集合的方式
    // for循环
    for (var o in list4) {
      print(o);
    }

    list4.forEach((val) {
      print(val);
    });
  }

  ///map是将key和Value相关联的对象，key和value都可以是任何类型的
  ///对象，并且key是唯一的；
  void mapType() {
    //Map初始化
    Map names = {'name': "xiaonu", "age": 23};
    print(names);
    Map map = {};
    map['name'] = "小蓝";
    map['age'] = 12;
    print(map);

    //Map遍历
    map.forEach((k, v) {
      print("$k:$v");
    });
  }

}